/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package com.mindbox.mueblesalpes.negocio.persistence;

import com.mindbox.mueblesalpes.negocio.entity.TarjetaCredito;
import javax.ejb.Local;

/**
 *
 * @author jsanchez
 */
@Local
public interface TarjetaCreditoLocal {

    /**
     * Crea una tarjeta de crédito en la base de datos.
     * @param tarjetaCredito
     * @throws com.mindbox.mueblesalpes.negocio.exception.TarjetaCreditoRepetida
     * @throws com.mindbox.mueblesalpes.negocio.exception.NoSePudoGrabarTarjetaCredito
     */
    public void crearTarjetaCredito(com.mindbox.mueblesalpes.negocio.entity.TarjetaCredito tarjetaCredito) throws com.mindbox.mueblesalpes.negocio.exception.TarjetaCreditoRepetida, com.mindbox.mueblesalpes.negocio.exception.NoSePudoGrabarTarjetaCredito;

    /**
     * Obtiene la tarjeta de credito dado su ID.
     * @param id
     * @return si la tarjeta no existe, se retorna null
     */
    TarjetaCredito getTarjetaCreditoFromId(Long id);

    /**
     * Obtiene la tarjeta de credito dado el Id del cliente.
     * @param idCliente
     * @return si la tarjeta no existe, se retorna null
     */
    public com.mindbox.mueblesalpes.negocio.entity.TarjetaCredito getTarjetaCreditoFromIdCliente(java.lang.Long idCliente);

    /**
     * Actualiza el monto de una tarjeta de crédito.
     * @param tarjetaCredito
     * @throws com.mindbox.mueblesalpes.negocio.exception.TarjetaCreditoNoExiste
     * @throws com.mindbox.mueblesalpes.negocio.exception.NoSePudoGrabarTarjetaCredito
     */
    public void actualizarTarjetaCredito(com.mindbox.mueblesalpes.negocio.entity.TarjetaCredito tarjetaCredito) throws com.mindbox.mueblesalpes.negocio.exception.TarjetaCreditoNoExiste, com.mindbox.mueblesalpes.negocio.exception.NoSePudoGrabarTarjetaCredito;
}
